package main

import "fmt"

type Pet interface {
	Name() string
	Category() string
}

type Dog struct {
	name string
}

func (dog *Dog) SetName(name string) {
	dog.name = name
}

func (dog Dog) Name() string {
	return dog.name
}
func (dog Dog) Category() string {
	return dog.name
}

func main() {
	dog := Dog{"little pig"}
	dog.SetName("pedro")
	var pet1 Pet = &dog
	var pet2 Pet = dog
	fmt.Printf("dog: %v\n", dog)
	fmt.Printf("pet1: %v\n", pet1)
	fmt.Printf("pet2: %v\n", pet2)
}
